#include <iostream>
#include <vector>
#include "include/geometryCircle.hpp"
#include "include/geometryPolygon.hpp"
#include "include/geometryRhombus.hpp"
#include "include/geometrySquare.hpp"

int main() 
{
    try {
        geometry::Circle circle(5.0);
        std::cout << "Circle area: " << circle.getArea() << std::endl;

        std::vector<std::pair<double, double>> polygon_vertices = {
            {0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}, {0.0, 1.0}
        };
        geometry::Polygon polygon(polygon_vertices);
        std::cout << "Polygon area: " << polygon.getArea() << std::endl;

        geometry::Rhombus rhombus(6.0, 8.0);
        std::cout << "Rhombus area: " << rhombus.getArea() << std::endl;

        geometry::Square square(4.0);
        std::cout << "Square area: " << square.getArea() << std::endl;
    } catch (const std::exception& e) {
        std::cerr << "Error: " << e.what() << std::endl;
        return 1;
    }

    return 0;
}